#ifndef __DTDELEMENT_H__
#define __DTDELEMENT_H__

using namespace std;

#include <string>
#include <map>
#include <vector>
#include <boost/regex.hpp>

#include "Children.h"
#include "Printer.h"

using namespace std;
using namespace boost;

//STRUCTURE MEMOIRE DTD
//
//DTDElement

enum ELEMENT_TYPE
{
	E_CHILDREN,
	E_EMPTY,
	E_MIXTE,
	E_ANY
};
	
class DTDElement : public Printer
{
	public :
		/*Constructeurs*/
		DTDElement();
		DTDElement( ELEMENT_TYPE aType );

		/*Destructeur*/
		virtual ~DTDElement();

		/*Get & Set*/
		const string& getName() const;
		const ELEMENT_TYPE getType() const;
		Children* getChildren();
		void setName( const string& name );
		void setChildren( Children* child );

		/*Fonction d'affichage de la structure en mémoire*/
		void printMe();

		/* Fonction de transformation en expression régulière*/
		virtual pair<string, regex> toRegExp();

	protected :
		string name;
		ELEMENT_TYPE typeDTDElement;
		Children* children;
};

#endif // #define __DTDELEMENT_H__

